﻿using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria.DataStructures;
using Terraria.GameInput;
using Terraria.ModLoader.IO;

namespace Terraria.ModLoader
{
	// Token: 0x020001EB RID: 491
	public class ModPlayer
	{
		// Token: 0x17000187 RID: 391
		// (get) Token: 0x060014C8 RID: 5320 RVA: 0x000105F6 File Offset: 0x0000E7F6
		// (set) Token: 0x060014C9 RID: 5321 RVA: 0x000105FE File Offset: 0x0000E7FE
		public Mod mod { get; internal set; }

		// Token: 0x17000188 RID: 392
		// (get) Token: 0x060014CA RID: 5322 RVA: 0x00010607 File Offset: 0x0000E807
		// (set) Token: 0x060014CB RID: 5323 RVA: 0x0001060F File Offset: 0x0000E80F
		public string Name { get; internal set; }

		// Token: 0x17000189 RID: 393
		// (get) Token: 0x060014CC RID: 5324 RVA: 0x00010618 File Offset: 0x0000E818
		// (set) Token: 0x060014CD RID: 5325 RVA: 0x00010620 File Offset: 0x0000E820
		public Player player { get; internal set; }

		// Token: 0x060014CE RID: 5326 RVA: 0x00413CC4 File Offset: 0x00411EC4
		internal ModPlayer CreateFor(Player newPlayer)
		{
			ModPlayer modPlayer = (ModPlayer)(this.CloneNewInstances ? base.MemberwiseClone() : Activator.CreateInstance(base.GetType()));
			modPlayer.Name = this.Name;
			modPlayer.mod = this.mod;
			modPlayer.player = newPlayer;
			modPlayer.index = this.index;
			modPlayer.Initialize();
			return modPlayer;
		}

		// Token: 0x060014CF RID: 5327 RVA: 0x00010629 File Offset: 0x0000E829
		public bool TypeEquals(ModPlayer other)
		{
			return this.mod == other.mod && this.Name == other.Name;
		}

		// Token: 0x1700018A RID: 394
		// (get) Token: 0x060014D0 RID: 5328 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool CloneNewInstances
		{
			get
			{
				return true;
			}
		}

		// Token: 0x060014D1 RID: 5329 RVA: 0x0001064C File Offset: 0x0000E84C
		public virtual bool Autoload(ref string name)
		{
			return this.mod.Properties.Autoload;
		}

		// Token: 0x060014D2 RID: 5330 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void Initialize()
		{
		}

		// Token: 0x060014D3 RID: 5331 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ResetEffects()
		{
		}

		// Token: 0x060014D4 RID: 5332 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void UpdateDead()
		{
		}

		// Token: 0x060014D5 RID: 5333 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PreSaveCustomData()
		{
		}

		// Token: 0x060014D6 RID: 5334 RVA: 0x0000D858 File Offset: 0x0000BA58
		public virtual TagCompound Save()
		{
			return null;
		}

		// Token: 0x060014D7 RID: 5335 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void Load(TagCompound tag)
		{
		}

		// Token: 0x060014D8 RID: 5336 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void LoadLegacy(BinaryReader reader)
		{
		}

		// Token: 0x060014D9 RID: 5337 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void SetupStartInventory(IList<Item> items)
		{
		}

		// Token: 0x060014DA RID: 5338 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PreSavePlayer()
		{
		}

		// Token: 0x060014DB RID: 5339 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostSavePlayer()
		{
		}

		// Token: 0x060014DC RID: 5340 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void UpdateBiomes()
		{
		}

		// Token: 0x060014DD RID: 5341 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool CustomBiomesMatch(Player other)
		{
			return true;
		}

		// Token: 0x060014DE RID: 5342 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void CopyCustomBiomesTo(Player other)
		{
		}

		// Token: 0x060014DF RID: 5343 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void SendCustomBiomes(BinaryWriter writer)
		{
		}

		// Token: 0x060014E0 RID: 5344 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ReceiveCustomBiomes(BinaryReader reader)
		{
		}

		// Token: 0x060014E1 RID: 5345 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void UpdateBiomeVisuals()
		{
		}

		// Token: 0x060014E2 RID: 5346 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void clientClone(ModPlayer clientClone)
		{
		}

		// Token: 0x060014E3 RID: 5347 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void SyncPlayer(int toWho, int fromWho, bool newPlayer)
		{
		}

		// Token: 0x060014E4 RID: 5348 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void SendClientChanges(ModPlayer clientPlayer)
		{
		}

		// Token: 0x060014E5 RID: 5349 RVA: 0x0000D858 File Offset: 0x0000BA58
		public virtual Texture2D GetMapBackgroundImage()
		{
			return null;
		}

		// Token: 0x060014E6 RID: 5350 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void UpdateBadLifeRegen()
		{
		}

		// Token: 0x060014E7 RID: 5351 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void UpdateLifeRegen()
		{
		}

		// Token: 0x060014E8 RID: 5352 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void NaturalLifeRegen(ref float regen)
		{
		}

		// Token: 0x060014E9 RID: 5353 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PreUpdate()
		{
		}

		// Token: 0x060014EA RID: 5354 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ProcessTriggers(TriggersSet triggersSet)
		{
		}

		// Token: 0x060014EB RID: 5355 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void SetControls()
		{
		}

		// Token: 0x060014EC RID: 5356 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PreUpdateBuffs()
		{
		}

		// Token: 0x060014ED RID: 5357 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostUpdateBuffs()
		{
		}

		// Token: 0x060014EE RID: 5358 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void UpdateEquips(ref bool wallSpeedBuff, ref bool tileSpeedBuff, ref bool tileRangeBuff)
		{
		}

		// Token: 0x060014EF RID: 5359 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostUpdateEquips()
		{
		}

		// Token: 0x060014F0 RID: 5360 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostUpdateMiscEffects()
		{
		}

		// Token: 0x060014F1 RID: 5361 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostUpdateRunSpeeds()
		{
		}

		// Token: 0x060014F2 RID: 5362 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PreUpdateMovement()
		{
		}

		// Token: 0x060014F3 RID: 5363 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostUpdate()
		{
		}

		// Token: 0x060014F4 RID: 5364 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void UpdateVanityAccessories()
		{
		}

		// Token: 0x060014F5 RID: 5365 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void FrameEffects()
		{
		}

		// Token: 0x060014F6 RID: 5366 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool PreHurt(bool pvp, bool quiet, ref int damage, ref int hitDirection, ref bool crit, ref bool customDamage, ref bool playSound, ref bool genGore, ref PlayerDeathReason damageSource)
		{
			return true;
		}

		// Token: 0x060014F7 RID: 5367 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void Hurt(bool pvp, bool quiet, double damage, int hitDirection, bool crit)
		{
		}

		// Token: 0x060014F8 RID: 5368 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostHurt(bool pvp, bool quiet, double damage, int hitDirection, bool crit)
		{
		}

		// Token: 0x060014F9 RID: 5369 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool PreKill(double damage, int hitDirection, bool pvp, ref bool playSound, ref bool genGore, ref PlayerDeathReason damageSource)
		{
			return true;
		}

		// Token: 0x060014FA RID: 5370 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void Kill(double damage, int hitDirection, bool pvp, PlayerDeathReason damageSource)
		{
		}

		// Token: 0x060014FB RID: 5371 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool PreItemCheck()
		{
			return true;
		}

		// Token: 0x060014FC RID: 5372 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PostItemCheck()
		{
		}

		// Token: 0x060014FD RID: 5373 RVA: 0x0000EAB9 File Offset: 0x0000CCB9
		public virtual float UseTimeMultiplier(Item item)
		{
			return 1f;
		}

		// Token: 0x060014FE RID: 5374 RVA: 0x0000EAB9 File Offset: 0x0000CCB9
		public virtual float MeleeSpeedMultiplier(Item item)
		{
			return 1f;
		}

		// Token: 0x060014FF RID: 5375 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void GetWeaponDamage(Item item, ref int damage)
		{
		}

		// Token: 0x06001500 RID: 5376 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void GetWeaponKnockback(Item item, ref float knockback)
		{
		}

		// Token: 0x06001501 RID: 5377 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void GetWeaponCrit(Item item, ref int crit)
		{
		}

		// Token: 0x06001502 RID: 5378 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool ConsumeAmmo(Item weapon, Item ammo)
		{
			return true;
		}

		// Token: 0x06001503 RID: 5379 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnConsumeAmmo(Item weapon, Item ammo)
		{
		}

		// Token: 0x06001504 RID: 5380 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool Shoot(Item item, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
		{
			return true;
		}

		// Token: 0x06001505 RID: 5381 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void MeleeEffects(Item item, Rectangle hitbox)
		{
		}

		// Token: 0x06001506 RID: 5382 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnHitAnything(float x, float y, Entity victim)
		{
		}

		// Token: 0x06001507 RID: 5383 RVA: 0x00404F84 File Offset: 0x00403184
		public virtual bool? CanHitNPC(Item item, NPC target)
		{
			return null;
		}

		// Token: 0x06001508 RID: 5384 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyHitNPC(Item item, NPC target, ref int damage, ref float knockback, ref bool crit)
		{
		}

		// Token: 0x06001509 RID: 5385 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnHitNPC(Item item, NPC target, int damage, float knockback, bool crit)
		{
		}

		// Token: 0x0600150A RID: 5386 RVA: 0x00404F84 File Offset: 0x00403184
		public virtual bool? CanHitNPCWithProj(Projectile proj, NPC target)
		{
			return null;
		}

		// Token: 0x0600150B RID: 5387 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyHitNPCWithProj(Projectile proj, NPC target, ref int damage, ref float knockback, ref bool crit, ref int hitDirection)
		{
		}

		// Token: 0x0600150C RID: 5388 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnHitNPCWithProj(Projectile proj, NPC target, int damage, float knockback, bool crit)
		{
		}

		// Token: 0x0600150D RID: 5389 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool CanHitPvp(Item item, Player target)
		{
			return true;
		}

		// Token: 0x0600150E RID: 5390 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyHitPvp(Item item, Player target, ref int damage, ref bool crit)
		{
		}

		// Token: 0x0600150F RID: 5391 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnHitPvp(Item item, Player target, int damage, bool crit)
		{
		}

		// Token: 0x06001510 RID: 5392 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool CanHitPvpWithProj(Projectile proj, Player target)
		{
			return true;
		}

		// Token: 0x06001511 RID: 5393 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyHitPvpWithProj(Projectile proj, Player target, ref int damage, ref bool crit)
		{
		}

		// Token: 0x06001512 RID: 5394 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnHitPvpWithProj(Projectile proj, Player target, int damage, bool crit)
		{
		}

		// Token: 0x06001513 RID: 5395 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool CanBeHitByNPC(NPC npc, ref int cooldownSlot)
		{
			return true;
		}

		// Token: 0x06001514 RID: 5396 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyHitByNPC(NPC npc, ref int damage, ref bool crit)
		{
		}

		// Token: 0x06001515 RID: 5397 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnHitByNPC(NPC npc, int damage, bool crit)
		{
		}

		// Token: 0x06001516 RID: 5398 RVA: 0x00008CF7 File Offset: 0x00006EF7
		public virtual bool CanBeHitByProjectile(Projectile proj)
		{
			return true;
		}

		// Token: 0x06001517 RID: 5399 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyHitByProjectile(Projectile proj, ref int damage, ref bool crit)
		{
		}

		// Token: 0x06001518 RID: 5400 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnHitByProjectile(Projectile proj, int damage, bool crit)
		{
		}

		// Token: 0x06001519 RID: 5401 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void CatchFish(Item fishingRod, Item bait, int power, int liquidType, int poolSize, int worldLayer, int questFish, ref int caughtType, ref bool junk)
		{
		}

		// Token: 0x0600151A RID: 5402 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void GetFishingLevel(Item fishingRod, Item bait, ref int fishingLevel)
		{
		}

		// Token: 0x0600151B RID: 5403 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void AnglerQuestReward(float rareMultiplier, List<Item> rewardItems)
		{
		}

		// Token: 0x0600151C RID: 5404 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void GetDyeTraderReward(List<int> rewardPool)
		{
		}

		// Token: 0x0600151D RID: 5405 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void DrawEffects(PlayerDrawInfo drawInfo, ref float r, ref float g, ref float b, ref float a, ref bool fullBright)
		{
		}

		// Token: 0x0600151E RID: 5406 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyDrawInfo(ref PlayerDrawInfo drawInfo)
		{
		}

		// Token: 0x0600151F RID: 5407 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyDrawLayers(List<PlayerLayer> layers)
		{
		}

		// Token: 0x06001520 RID: 5408 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyDrawHeadLayers(List<PlayerHeadLayer> layers)
		{
		}

		// Token: 0x06001521 RID: 5409 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyScreenPosition()
		{
		}

		// Token: 0x06001522 RID: 5410 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void ModifyZoom(ref float zoom)
		{
		}

		// Token: 0x06001523 RID: 5411 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PlayerConnect(Player player)
		{
		}

		// Token: 0x06001524 RID: 5412 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void PlayerDisconnect(Player player)
		{
		}

		// Token: 0x06001525 RID: 5413 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnEnterWorld(Player player)
		{
		}

		// Token: 0x06001526 RID: 5414 RVA: 0x00006B58 File Offset: 0x00004D58
		public virtual void OnRespawn(Player player)
		{
		}

		// Token: 0x06001527 RID: 5415 RVA: 0x0000ADF8 File Offset: 0x00008FF8
		public virtual bool ShiftClickSlot(Item[] inventory, int context, int slot)
		{
			return false;
		}

		// Token: 0x040014D7 RID: 5335
		internal int index;
	}
}
